#ifndef DBOPERATION_H
#define DBOPERATION_H

#include <QObject>
#include <QSqlDatabase>
#include "seckeyinfo.h"

class DBOperation : public QObject
{
    Q_OBJECT
public:
    explicit DBOperation(QObject *parent = nullptr);

    // 连接数据库
    bool connectDB(QString user, QString passwd,
                   QString host, unsigned short port=1521, QString dbName="orcl");

    // 和数据库断开连接
    void disConnectDB();

    // 验证登录数据
    bool userAuthentication(QString id, QString passwd);

    // 验证客户端节点是否存在以及状态是否正常
    bool isValideClient(QString id);

    // 秘钥协商成功之后, 插入新的秘钥
    // 需要的参数: 客户端ID, 服务器ID, keyID, 状态, 秘钥的值
    bool insertSeckeyInfo(SeckeyInfo &keyinfo);

    // 得到一个可用的秘钥ID
    int getKeyID();

    // 修改秘钥的状态
    bool modifyKeyStatus(bool status, int keyID);


private:
    QSqlDatabase m_db;  // 无效的空对象, 必须要实例化之后才能使用
};

#endif // DBOPERATION_H
